package pruebas;

import modelo.*;
import junit.framework.TestCase;

public class MacXTest extends TestCase {
	private MacX motor;
	
	protected void setUp() throws Exception{
		super.setUp();
		motor = new MacX();
		Cronometro.getInstance().deleteObservers();
		Cronometro.getInstance().addObserver(motor);
		Cronometro.getInstance().iniciar();
	}

	public void testObtenerAceleracionMax() throws InterruptedException{
		/*** EL TEST ESTA COMENTADO PARA CORRER LAS PRUEBAS RAPIDO **/
		
//		final long deltaTiempo = Cronometro.INTERVALO_DE_TIEMPO / 2;
//		assertEquals(MacX.ACELERACION_ENTRE_0_Y_1, motor.obtenerAceleracionMax(), 0.001);
//		motor.acelerar();
//		
//		// 1 deltaTiempo antes de alcanzar la VELOCIDAD_MAXIMA_1
//		Thread.sleep((int)((Convertir.X_a_mX(MacX.TIEMPO_PARA_ALCANZAR_LA_VELOCIDAD_MAXIMA_1)) 
//				- deltaTiempo));	
//		assertTrue(motor.getVelocidad() < MacX.VELOCIDAD_MAXIMA_1);
//		
//		// 1 deltaTiempo despues de alcanzar la VELOCIDAD_MAXIMA_1		
//		Thread.sleep(2 * deltaTiempo);
//		assertTrue(motor.getVelocidad() > MacX.VELOCIDAD_MAXIMA_1);
//		
//		// 1 deltaTiempo antes de alcanzar la VELOCIDAD_MAXIMA_2
//		Thread.sleep((int)((Convertir.X_a_mX(MacX.TIEMPO_PARA_ALCANZAR_LA_VELOCIDAD_MAXIMA_2)) 
//				- 2 * deltaTiempo));
//		assertTrue(motor.getVelocidad() < MacX.VELOCIDAD_MAXIMA_2);
//		
//		// 5 deltaTiempo despues de alcanzar la VELOCIDAD_MAXIMA_2
//		Thread.sleep(5 * deltaTiempo);
//		assertTrue(motor.getVelocidad() == MacX.VELOCIDAD_MAXIMA_2);
//		assertEquals( MacX.ACELERACION_ENTRE_1_Y_2, motor.obtenerAceleracionMax(), 0.001);
//		assertTrue(motor.getAceleracion() == 0);
	}
}